1.6 Das Meldungsfenster
 
Der Benutzer soll das Formular über die Abbrechen-Schaltfläche schließen können. Mit einem Doppelklick auf den Button gelangen Sie in den Code oder genauer: Sie gelangen zwischen die beiden Zeilen
Private Sub butAbbrechen_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs)
Handles butAbbrechen.Click
End Sub
Die lange erste Zeile steht nur für das auslösende Ereignis, wenn der Benutzer auf die Schaltfläche klickt. Das Objekt, welches den Befehl auslöst, heißt »butAbbrechen«. Das Ereignis »Click« steht für das Mausklicken des Benutzers, aber auch dafür, dass der Benutzer mit der Tabulator-Taste auf den Button »springen« und dann mit (Enter) den Code auslösen kann, der sich dahinter verbirgt.
In diesen Code muss der Befehl für »Schließe die Form«. Die Form trägt den Namen »frmKaffee«. Gibt man den Namens dieses Objekts ein und fügt danach einen Punkt an, dann erscheint eine kleine Auswahlliste von Dingen, die ich bisher noch nicht erläutert habe. Nach dem Punkt muss »ActiveForm« ausgewählt werden. Und diesem Objekt kann befohlen werden, dass es sich schließen soll (natürlich wieder mit einem Punkt). »Close« heißt dies in der Sprache von VB.NET. Die ganze Zeile lautet dann:
frmKaffee.ActiveForm.Close
Es geht ein klein wenig einfacher. Der erste Teil kann mit »Me« abgekürzt werden. Also:
Me.Close
Diesen Befehl kann man überall verwenden, ohne zu wissen, wie die Userform heißt. Ein Test beweist, dass man mit »Abbrechen« das Formular schließen kann.
Zurück zum Formular gelangt man über das Register. Das eine ist für die Entwurfsansicht zuständig, das heißt dort wird gebastelt. Im anderen steht der Code.
Auch die Ok-Schaltfläche soll eine Funktion haben. Klickt der Benutzer auf »Ok«, so soll er eine Meldung erhalten, dass es nun Kaffee gibt. Ein Doppelklick führt zu dem Code. Zwischen die beiden Zeilen
Private Sub butOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles butOk.Click
End Sub
wird der Befehl für das Meldungsfenster geschrieben. Er lautet:
MessageBox
1.6.1 Die Code-Eingabe für die MessageBox
 
Wie geht es dann weiter? Die Messagebox ist ein Objekt, und nach Objekten steht immer ein Punkt, also:
MessageBox.
Schon erscheint eine der tollen Hilfen der Programmiersprache: Es wird angezeigt, wie es weitergeht, das heißt, es wird gezeigt, was die MessageBox kann - sie kann angezeigt werden:
MessageBox.Show
Ohne zu weit vorgreifen zu wollen, sei Folgendes gesagt: Show ist eine Methode, das heißt, sie bewirkt etwas. Nach einer Methode steht immer eine Klammer. Wird also nach MessageBox.Show die öffnende Klammer eingegeben, dann erscheint eine weitere Hilfe: ein Quickinfo. Es verrät, dass zuerst ein »text« stehen muss. Mehr noch: »text« wird erklärt als »Der im Meldungsfenster anzuzeigende Text«. Und der wird - wie in vielen anderen Programmiersprachen auch - in Anführungszeichen gesetzt. Also beispielsweise:
MessageBox.Show("Achtung: Jetzt gibt es Kaffee!")
Das reicht aus, die Klammer wird geschlossen, nun speichern und starten. Tatsächlich: Jetzt gibt es Kaffee. Vielleicht hat es Sie gewundert, dass das Meldungsfenster zwölf Varianten zur Verfügung stellt und dass die erste nicht nur einen Eintrag, sondern sieben Parameter benötigt. Der Hintergrund ist folgender: Man kann dieser Funktion eine oder mehrere Varianten geben. Unsere Möglichkeit - »melde nur Text« - finden Sie unter der Nummer 6. Sind Sie also unsicher, ob Ihre Eingabe korrekt ist, so wechseln Sie mit den Pfeiltasten auf der Tastatur oder mit der Maus nach oben und unten. So schön es ist, dass uns verschiedene Varianten zur Verfügung stehen, so knauserig ist VB.NET: Es verlangt unbedingt eine der vorgeschlagenen Möglichkeiten.
Man kann die Meldung allerdings noch verfeinern. Wird die letzte Klammer gelöscht, oder noch besser: Wenn Sie vor die schließende Klammer klicken, dann können Sie mit dem Symbol »Zeigt die Parameterinformation ... an« das Quick-Info wieder herholen. Es geht noch weiter. Nach dem »text« folgt als Trennzeichen ein Komma und danach wird die »caption« eingegeben. Auch sie steht in Anführungszeichen, weil auch sie ein String, das heißt eine Zeichenkette, ist. Wie wäre es mit »Meine Kaffeemaschine«?
Abbildung 1.11
Das Meldungsfenster - die Caption
Nach dem zweiten Komma erscheint eine Liste der Möglichkeiten für die »buttons«. Alle beginnen mit »MessageBoxButtons«. Die sechs Möglichkeiten stehen für die sechs Varianten der Schaltflächen. Es bedeuten:
Tabelle 1.1
Die verschiedenen Schaltflächen im Meldungsfenster
| Bezeichnung
|
Bedeutung
|
| AbortRetryIgnore
|
Abbrechen, Wiederholen, Ignorieren
|
| OK
|
OK
|
| OKCancel
|
OK, Abbrechen
|
| RetryCancel
|
Wiederholen, Abbrechen
|
| YesNo
|
Ja, Nein
|
| YesNoCancel
|
Ja, Nein, Abbrechen
|
Abbildung 1.12
Eine Variante des Meldungsfensters
Die anderen Schaltflächen kennen Sie von anderen Anwendungen:
Abbildung 1.13
Ein Beispiel aus Word
Der nächste Parameter verlangt ein Symbol. Die Symbole beginnen mit »MessageBoxIcon.« und heißen:
Tabelle 1.2
Die verschiedenen Symbole im Meldungsfenster
| Bezeichnung
|
Bedeutung
|
Symbol
|
| Asterisk
|
Stern
|
|
| Error
|
Fehler
|
|
| Exclamation
|
Ausrufezeichen
|
|
| Hand
|
Hand
|
|
| Information
|
Information
|
|
| None
|
Kein Symbol
|
|
| Question
|
Fragezeichen
|
|
| Stop
|
Stop
|
|
| Warning
|
Warnung
|
|
Achtung: Unter Windows funktionieren nur vier der Symbole: »Exclamation«, »Information«, »Question« und »Warning« - die übrigen Varianten zeigen eine dieser vier Möglichkeiten an.
Abbildung 1.14
Die vier möglichen Symbole
Soll der Fokus nicht auf der ersten Schaltfläche sitzen, sondern auf einer anderen, dann wird »MessageBoxDefaultButton« auf »Button1«, »Button2« oder »Button3« gesetzt. Damit kann der Benutzer leichter mit der (Enter)-Taste die wichtigste Taste aktivieren. Und schließlich könnte nach dem letzten Komma die Laufrichtung des Textes festgelegt werden, was für arabische oder hebräische PCs interessant ist.
Die ganze Zeile sieht dann folgendermaßen aus:
Private Sub cmdOK(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles cmdOK.Click
MessageBox.Show("Achtung: Jetzt gibt es Kaffee!",
"Meine Kaffeemaschine", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information,
MessageBoxDefaulButton.Buttons2, MessageBoxOptions.DefaultDesktopOnly)
End Sub
Das Ergebnis sieht dann folgendermaßen aus:
Abbildung 1.15
Das Meldungsfenster
1.6.2 Ein Wort zum »alten« Visual Basic
 
Noch immer werden die Visual Basic-Befehle unterstützt. Das heißt, man könnte statt »MessageBox« den »alten« Befehl »MsgBox« verwenden, dessen Syntax zwar ähnlich, aber dennoch etwas anders ist. In diesem Buch wird darauf verzichtet, die alten Befehle zu erklären. Wer sie kennt und unbedingt verwenden möchte - bitte schön. Die VB.NET-Befehle haben den großen Vorteil, dass sie durchgängig gleich strukturiert sind, das hilft enorm beim Erlernen.
1.6.3 Die Code-Eingabe allgemein
 
Ein paar theoretische Bemerkungen zur Code-Eingabe:
Texteingabe und -korrektur im Codefenster erfolgen nach den gleichen Regeln wie in der Textverarbeitung: Zu korrigierende Zeichen werden mit der Korrekturtaste (Rückschritt) oder der Taste (Entf) gelöscht, Text kann an beliebigen Stellen eingefügt werden. Mit der (Einfg) kann in den Überschreibmodus gewechselt werden: Der Cursor erscheint dann als Rechteck und löscht beim Schreiben die früheren Zeichen. Um Text zu markieren, können Sie die Maus verwenden und mit gedrückter linker Maustaste über den Text ziehen oder mit gedrückter (Umschalt)-Taste + Pfeiltasten den Cursor über den Text bewegen. Der gesamte Code, das heißt das ganze Modul, kann auch mit (Strg) + (A) oder dem Menü Bearbeiten . Alles Auswählen markiert werden. Zum Kopieren und Ausschneiden kann das Menü Bearbeiten . Kopieren und Bearbeiten . Einfügen verwendet werden, respektive: Bearbeiten . Ausschneiden und Bearbeiten . Einfügen. Kopierte Textteile landen in der Toolbox im »Zwischenablagering«. Von dort können mit Hilfe der rechten Maustaste also auch ältere Texte, die sich noch im Zwischenspeicher befinden, herausgeholt werden.
Textbausteine gibt es nicht, dafür aber die zweite Möglichkeit, Code-Schnipsel im Register »Allgemein« in der Toolbox abzulegen. Texte im Code können markiert und in die Toolbox gezogen werden, oder man drückt beim Herausziehen die (Strg)-Taste - dann werden sie hineinkopiert. In der Toolbox wird nun der Beginn angezeigt. Die Texte können jederzeit wieder herausgezogen werden.
Werden Textteile kopiert, dann erscheinen sie im »Zwischenablagering«. Auch dort können sie jederzeit mit gedrückter Maustaste herausgezogen werden.
Abbildung 1.16
Eine der vielen angenehmen Hilfen in VB.NET
Man kann markierte Textteile innerhalb des Codes mit der Maus verschieben - mit der Drag&Drop-Funktion. Ebenso können Textteile mit der (Strg)-Taste durch Ziehen kopiert werden.
Wenn sich der Cursor am Anfang einer Zeile befindet und dort (Enter) gedrückt wird, dann wird eine neue Codezeile oberhalb eingefügt. Die vier Pfeiltasten bewegen den Cursor Zeile für Zeile oder Zeichen für Zeichen nach oben, unten, links oder rechts. Die Tasten (Bild oben) beziehungsweise (Bild unten) blättern eine Bildschirmseite nach oben oder unten. Mit (Strg) + (Pfeil oben) beziehungsweise (Strg) + (Pfeil unten) blättern Sie in die nächste oder vorhergehende Prozedur. Der Einzug wird automatisch vorgenommen, was sehr hilfreich ist.
Das alles dürfte aus der Textverarbeitung bekannt sein.
Lange Textzeilen
Normalerweise entspricht eine Textzeile einem Befehl. Nach dem Drücken von (Enter) wird die Eingabe beendet und der eingegebene Text wird auf seine Richtigkeit überprüft. Problemlos können die Anweisungszeilen durch Leerzeilen voneinander getrennt werden - leere Zeilen werden übergangen und haben keinerlei Funktion, außer dass sie beim Lesen helfen.
Es kann nun passieren, dass ich eine sehr lange Befehlszeile eingeben muss, zum Beispiel:
MessageBox.Show("Möchten Sie, dass Ihr Computer zerstört wird?",
" Odyssee 2000", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning,
MessageBoxDefaulButton.Buttons1, MessageBoxOptions.DefaultDesktopOnly)
Ein automatischer Umbruch, wie von der Textverarbeitung bekannt, findet erst nach 1.024 Zeichen statt: Der Text fließt bis dahin immer weiter nach rechts. Um einen manuellen Umbruch zu organisieren, kann der Text in mehrere Zeilen geteilt werden. Diese werden durch eine Leerstelle (sie ist unbedingt nötig!), der ein Unterstrich am Ende der Zeile folgt, getrennt.
MessageBox.Show _
("Ihr Computer wird nun zerstört", _
"Odyssee 2000", MessageBoxButtons.YesNoCancel, _
MessageBoxIcon.Warning, _
MessageBoxDefaulButton.Buttons1, _
MessageBoxOptions.DefaultDesktopOnly)
Die Option könnte über Extras . Optionen ausgeschaltet werden. Dort finden Sie im Ordner Text-Editor . Basic die Einstellung Zeilenumbruch. Mit ihrer Hilfe könnte man mehrzeilig schreiben, was aber sicherlich nur wenige Basic-Programmierer tun.
Umgekehrt können mehrere logische Programmierzeilen in eine Textzeile geschrieben werden. Dann werden sie mit einem Doppelpunkt (»:«) getrennt, wie beispielsweise folgende drei Befehlszeilen:
MessageBox.Show("Achtung!") : Beep() : Beep()
Hiervon ist in der Regel abzuraten, weil der Code sehr schnell unübersichtlich wird.
Kommentare und optische Gliederungen
Häufig wünscht der Programmierer seine Programme zu kommentieren; sei es, um sie besser zu strukturieren, sei es, um anderen Programmierern, die damit weiterarbeiten, schnell einen Überblick zu verschaffen. Manchmal will ein Kunde nach Monaten, dass ich an dem alten Programm etwas ändere. Woher soll ich aber wissen, was ich vor Monaten gemacht habe? In so einem Fall sehe ich in den Kommentaren nach. Sollte jemand mal mit meinen Programmen weiterarbeiten, dann könnte er an den Kommentaren erkennen, was ich gemacht und mir dabei gedacht habe. Zwar gebe ich normalerweise meine Programme nicht her, aber man könnte es theoretisch tun. Einmal hatte ich sogar den Fall, dass eine Firma behauptete, ich hätte etwas falsch programmiert. Da konnte ich ihnen zeigen, dass sie nicht Recht hatten, denn im Kommentar stand, was wir damals ausgemacht hatten.
Kommentare können überall eingefügt werden: Sie werden mit einem Apostroph »'« eingeleitet, der innerhalb einer Zeile stehen kann:
MessageBox.Show ("Habe nun ach...") 'Dies ist von Goethe!
oder am Anfang einer Zeile:
' Nun folgt ein Meldungsfenster:
MessageBox.Show _
("Philosophie, Juristerei und Medizin")
' Dies war das Meldungsfenster
Mit dem Anführungszeichen (Apostroph) meine ich den Haken über dem Zahlenzeichen, neben dem Ä, nicht den Akzent über dem Ü. Der ist für meinen Vornamen reserviert.
Kommentare können ebenso am Beginn einer Zeile durch ein »rem« (remark) eingeleitet werden:
Rem Nun folgt ein Meldungsfenster:
MessageBox.Show("und leider auch Theologie")
Rem Dies war das Meldungsfenster
Dieses »rem« wirkt etwas altmodisch und erfordert mehr Tipparbeit als Apostrophe. Sonst gibt es keinen Grund, auf »rem« zu verzichten. Ein kleiner Unterschied besteht zwischen »rem« und dem Apostroph: Das Apostroph kann am Ende einer Zeile stehen und diese kommentieren, »rem« nicht!
Während des Programmierens kann mit »rem« oder Apostroph eine Zeile ausgeschaltet werden - besonders, wenn sie später noch verwendet wird.
Eine praktische Hilfe finden Sie in der Symbol-Leiste »Text-Editor«. Dort gibt es zwei Symbole »Die ausgewählten Textzeilen auskommentieren« und »Hebt den Kommentar der ausgewählten Textzeilen auf.« Dies ist praktisch, wenn man ein Programm testen möchte, aber will, dass einige bestimmte Zeilen nicht ausgeführt werden. Diese kann man dann markieren und auskommentieren, also ausschalten.
Abbildung 1.17
Die beiden Symbole zum Kommentieren
Kommentare erscheinen in grüner Schrift, was Sie im Menü Extras . Optionen im Ordner Umgebung . Schriftarten und Farben unter Elementvordergrund Kommentartext ändern können. Wenn Sie es unbedingt verändern müssen, dann sollten Sie nicht Schwarz nehmen, denn die Kommentare sollen auffallen. Kommentare werden nicht abgearbeitet, sondern dienen zur Erläuterung, sodass der Programmierer bestimmte Codestellen entweder schnell findet oder Erläuterungen zum Code hat.
Auch Rot ist eine schlechte Farbe für Kommentarzeilen, denn in Rot erscheinen Fehler. Und schließlich gibt es noch Farben, die das Auge nicht so gerne mag ... Vielleicht bleiben wir doch bei Grün.
Ein beliebtes Gestaltungsmittel, das Ordnung schafft, sind Kommentare in Kästen mit »*«, »-« oder »=«. Etwa so:
'***********************************************
'* *
'* Und nun für unsere Goethe-Freunde *
'* *
'***********************************************
MessageBox.Show _
("durchaus studiert mit heißem Bemühn.")
'***********************************************
'* *
'* Heute: Faust I *
'* *
'***********************************************
Zugegeben: Solch ein gestalterisches Werk erfordert (Tipp-)Arbeit, strukturiert allerdings das Programm sehr gut.
Einrücken von Zeilen
Eine weitere Gliederungsmöglichkeit ist das Einrücken von Zeilen, das Basic für uns vornimmt. Dadurch werden Ebenen gekennzeichnet, was bei Verschachtelungen hilfreich ist, und die Übersichtlichkeit erhöht. Ich halte diese Einstellung für wichtig, da sie die zusammengehörigen Blöcke deutlich macht. Man könnte sie über Extras . Optionen (Kategorie Text-Editor . Basic . Tabstopps) deaktivieren.
Gliederungen
Bei allen Gliederungen, die VB.NET uns zur Verfügung stellt, kann der Code selbst in Teile untergliedert werden. Dazu kann er mit der Maus markiert werden. Nun befindet sich im Kontextmenü die Option »Gliederung«. Wird sie ausgewählt, so kann dieser Teil über die drei Pünktchen am linken Rand ein- und ausgeschaltet werden. Gerade bei längeren Projekten ist dies eine sinnvolle Hilfe.
Nochmals meine Bitte: Auch wenn ich hier im Buch nur relativ wenig kommentiere (sonst wird der Code zu lang), bitte kommentieren Sie immer. Und alles!
|